package com.webapp;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;
import java.util.List;

//代码生成器 首先导入mybatis-plus依赖，接下载如下
public class Code {

    public static void main(String[] args) {
        //新建一个代码生成齐
        AutoGenerator mpg = new AutoGenerator();
        //配置策略（如何执行）1：全局配置，2:配置数据源 3:包的配置 4策略配置（mp官网有的）

        //1:全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPtch = System.getProperty("user.dir");//获取当前项项目路径
        gc.setOutputDir(projectPtch + "/src/main/java/");//代码生产到哪个目录。
        gc.setAuthor("liuxiangpeng");

//        gc.setActiveRecord(true);
//        gc.setEnableCache(false);// XML 二级缓存
        gc.setBaseResultMap(true);// XML ResultMap
//        gc.setBaseColumnList(false);// XML columList


        gc.setOpen(false);//是否打开资源管理器
        gc.setSwagger2(true);//是否帮我们配置swagger文档
        gc.setFileOverride(true);//是否覆盖原来生产的
        gc.setServiceName("%sService");//去除Service的I前缀
        gc.setIdType(IdType.AUTO);
        gc.setDateType(DateType.ONLY_DATE);//设置时间类型
        mpg.setGlobalConfig(gc);//

        //2:配置数据源
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://120.132.101.152:3306/tp_insurance?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8");//数据库url
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");//数据库的连接驱动
        dsc.setUsername("root");//用户名
        dsc.setPassword("mysql+edata+1");//密码
        dsc.setDbType(DbType.MYSQL);//数据库的类型
        mpg.setDataSource(dsc);

        //3:包的配置
        PackageConfig pkc = new PackageConfig();
        //pkc.setController("controller");
        pkc.setEntity("model");
        pkc.setMapper("mapper");
        pkc.setService("service");
        pkc.setParent("com.webapp");

        mpg.setPackageInfo(pkc);
        //4:策略配置
        StrategyConfig strategy = new StrategyConfig();
        strategy.setInclude(
//                "agent_cluster_result",
//                "agent_group_sale_detail",
//                "agent_user_sale_detail",
//                "fixed_recommend_model",
//                "groupanduser_sale_config",
//                "oneyear_and_longinsurance_number",
//               "product_comprehensive_score"
//                "product_sale_score",
//                "science_config_number",
//                "science_guarantee_config",
//                "prd_recomm_customer_detail",
//                "userneed_scienceconfig",
//                "zhu_push_point",
//                "zhu_variable_config",
//                "zhuandsale_score_config",
//                "prd_recomm_product_detail"
                //"jieguo"
//                "log"
                "prd_recomm_agent_detail"
        );//设置要映射的表！！！！！！！！！！！！！！
        strategy.setNaming(NamingStrategy.underline_to_camel);//包的命名规则，下划线转驼峰
        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
        strategy.setEntityLombokModel(true);//实体类自动生成lombok
        strategy.setRestControllerStyle(true);//驼峰命名
        strategy.setLogicDeleteFieldName("deleted");
        //填充
        TableFill create = new TableFill("createTime", FieldFill.INSERT);
        TableFill update = new TableFill("updateTime", FieldFill.INSERT_UPDATE);
        List<TableFill> list = new ArrayList<>();
        list.add(create);
        list.add(update);
        strategy.setTableFillList(list);

        mpg.setStrategy(strategy);


        mpg.execute();//执行！

    }
}
